/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.estoque.Fornecedores;

import br.com.estoque.AcessoBanco.AcessoMysql;
import br.com.estoque.Clientes.Cliente;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author note
 */
public class FornecedorDAO {
    PreparedStatement pstm;
    ResultSet rs;
    String consultaFornecedor = "select * from fornecedores where NOME like ?";
    String cadastraFornecedor = "INSERT INTO fornecedores (NOME, CNPJ, ENDERECO, BAIRRO, CIDADE, UF, CEP, TELEFONE) "
            + "VALUES (?,?,?,?,?,?,?,?)";
    String alteraFornecedor = "update fornecedores set NOME=?, CNPJ=?, ENDERECO=?, BAIRRO=?, CIDADE=?, UF=?, CEP=?, TELEFONE=?"
          + "where CODIGO=?  ";
    AcessoMysql mysql = new AcessoMysql();
    String deletaFornecedor = "delete from fornecedores where nome like ?";
    
    public FornecedorDAO(){}
    
    public void cadastrarFornecedor(Fornecedor fornecedor) throws SQLException{
        //prepara a conexão
            pstm = mysql.conectar().prepareStatement(cadastraFornecedor);
        //seta os valores
                pstm.setString(1, fornecedor.getNome());
                pstm.setString(2, fornecedor.getCNPJ());
                pstm.setString(3, fornecedor.getEndereco());
                pstm.setString(4, fornecedor.getBairro());
                pstm.setString(5, fornecedor.getCidade());
                pstm.setString(6, fornecedor.getUF());
                pstm.setString(7, fornecedor.getCEP());
                pstm.setString(8, fornecedor.getTelefone());

            //executa o codigo SQL
            pstm.execute();
            mysql.desconectar();
       
    }
    
    public List<Fornecedor>  listarFornecedores(String nome) throws SQLException{
        List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
       // rs = null;
        
             pstm = mysql.conectar().prepareStatement(consultaFornecedor);
             pstm.setString(1, nome);
             rs = pstm.executeQuery();
            
            // Cliente fornecedor;
             while(rs.next()){
                 Fornecedor fornecedor = new Fornecedor();
                 
                 fornecedor.setCodigo(Long.valueOf(rs.getString("codigo")));
                 //cliente.setCodigo(rs.getInt("CODIGO"));
                 fornecedor.setNome(rs.getString("nome"));
                 fornecedor.setEndereco(rs.getString("endereco"));
                 fornecedor.setBairro(rs.getString("bairro"));
                 fornecedor.setCidade(rs.getString("cidade"));
                 fornecedor.setUF(rs.getString("uf"));
                 fornecedor.setCEP(rs.getString("cep"));
                 fornecedor.setCNPJ(rs.getString("cep"));
                 
                 fornecedores.add(fornecedor);
             }
             rs.close();
             pstm.close();
             return fornecedores;
    }
    
    public void alterarFornecedor(Fornecedor fornecedor) throws SQLException{
        //prepara a conexão
         pstm = mysql.conectar().prepareStatement(alteraFornecedor);
         
         //seta os valores no banco
         pstm.setString(1, fornecedor.getNome());
         pstm.setString(2, fornecedor.getCNPJ());
         pstm.setString(3, fornecedor.getEndereco());
         pstm.setString(4, fornecedor.getBairro());
         pstm.setString(5, fornecedor.getCidade());
         pstm.setString(6, fornecedor.getUF());
         pstm.setString(7, fornecedor.getCEP());
         pstm.setString(8, fornecedor.getTelefone());
         pstm.setLong(9, fornecedor.getCodigo());
         
         //executa o codigo sql
         pstm.executeUpdate();
         mysql.desconectar();
         
    }
    
    public void excluirFornecedor(Fornecedor fornecedor) throws SQLException{
        pstm = mysql.conectar().prepareStatement(deletaFornecedor);
        pstm.setString(1, fornecedor.getNome());
        pstm.executeUpdate();
        mysql.desconectar();
        
    }
    
}
